iT邦幫忙

2023 iThome 鐵人賽

DAY 9
0

目前我們的環境已經有1台 Proxmox VE 和1台 Debian 了
未來主機數量一多 要使用 IP 來管理會有蠻大的問題
這時可以使用 DNS (Domain Name Service) 來將網址轉換為 IP
這樣只需要記著網址就可以方便管理伺服器了
今天的環境會在 Debian 上透過 bind9 這個套件實作

Install Bind9

先透過 apt 來安裝 bind9

apt-get install bind9 -y

安裝好後進到 bind9 的目錄下看看

cd /etc/bind/
ls -al

https://ithelp.ithome.com.tw/upload/images/20230924/201627739MHzJcMKSd.png
可以看到有兩種同個前綴的檔案

  • db.
    • 這個是 Bind9 用來指定 DNS zone 資料的檔案
    • 我通常會以 db.<ZONENAME> 來做命名
    • 例如: db.domain.test
  • named.conf
    • 這個是 Bind9 的設定檔 依照設定的功能分成不同檔案
    • default-zones 是 bind9 預設建立的 zone 設定檔
    • local 是用來設定 local zone 的設定
    • options 是 bind9 本身的設定檔

這次主要會設定這兩個檔案

named.conf

先打開 named.conf.default-zones 來看看預設設定

vim named.conf.default-zones

https://ithelp.ithome.com.tw/upload/images/20230924/2016277322hm9K6DBB.png
應該會看到這些設定檔
我們可以透過設定檔內的設定來大致了解格式、內容等資訊
看完後就離開 移動到 named.conf.local 上開始做自己的設定
這次使用 ironman.test. 當作網域名稱作為設定

vim named.conf.local

zone "ironman.test" {
    type master;
    file "/etc/bind/db.ironman.test";
}

解釋一下設定檔
zone "ironman.test" {} 這邊是指定這個網域的設定
type master; 這邊是指定 zone 型態, 型態有這些

  • Primary
  • Slave (Secondary)
  • Forward
  • Cache only

file 是指定這個 zone 的資料檔案的位置 這邊也可以用相對路徑指定但我習慣使用絕對路徑
這樣子就設定好 zone 的設定了 接下來把資料 key 進去

db.

key 進去之前也先看看 db. 檔案的樣子 打開 db.local 看看

vim /etc/bind/db.local

https://ithelp.ithome.com.tw/upload/images/20230924/20162773X3epB42R8U.png
看起來跟台灣晚上的市容差不多五顏六色
看到這個格式一定是不知道該幹嘛 但其實這個檔案的格式很簡單 先從特殊符號來看

; 是註解, @ 代表的是這個網域的網域名稱(@ = ironman.test) 或是 $ORIGIN 指定的 Domain Name
. 加在網域名稱最後面是代表這是一個完整的網域名稱
以我要設定網域 ironman.test 來說 dns 在 db.檔案裡面會被視為 dns.ironman.test
但是網綠名稱是 goldman.test. 對於 db.檔來說就會是 goldman.test
這個在指定 DNS delegation 比較常會用到
特殊符號大致上就是這樣子 接著來解釋上面圖片看到的綠字

SOA (Start of Authority)
用來指定 Domain 的基本參數使用, TTL, 刷新,過期時間等資訊 通常這邊會使用預設值
還有拿來設定網域的管理員
NS (Name Server)
用來指定 Domain 的 DNS Server 位置
A (Address)
用來指定網域名稱對應的 IP (正解)
PTR (Pointer)
用來指定 IP 對應的網域名稱 (反解)
CNAME
用來指定網域的別名

大致上了解功能後來看看設定檔的格式吧 以上面圖的第12行作為範例

@        IN        NS         localhost.
dns      IN        A          192.168.202.174

可以把這個格式分成 4 Part 來看
第一部分就是我們要設定的網域名稱
第二部分 IN 就是類似 @ 的功能 代表在
第三部分是代表這個 DNS 的類型是什麼
第四部份是 Domain Name 對應的值

確認好格式之後開始來設定
先複製 db.empty 來操作

cp db.empty db.ironman.test
vim db.ironman.test

基本上我會設定成這個樣子
https://ithelp.ithome.com.tw/upload/images/20230924/20162773b04hgvI9ow.png
指定 Domain 的 NS 到 dns 這台主機上
指定 Domain 為 192.168.202.174
再指定 dns 為 192.168.202.174
這樣子就是最基本的 Domain 設定了
接著繼續設定

pve        IN        A       192.168.202.172
pve-vm     IN        A       192.168.202.173

就完成設定了
接著來重啟服務

service bind9 restart

驗收

這邊先來安裝用來查找 Domain Name 的套件

apt-get install dnsutils

安裝好後就可以使用了 但這邊來改一下本機的網路 DNS 設定

vim /etc/resolv.conf

nameserver 127.0.0.1

接著來查詢看看
https://ithelp.ithome.com.tw/upload/images/20230924/20162773wwNwBQppX9.png
成功!!

補充

如果現在只使用今天架設的 DNS 會發現這個 DNS 只能查到自己設定的東西而已
這時要透過 Forward 傳送 Request 到其他 DNS Server 上查找才行
去打開 named.conf.options 修改一下 forwarders 把他反註解調 設定外部的 DNS 像 1.1.1.1 或 8.8.8.8
https://ithelp.ithome.com.tw/upload/images/20230924/20162773fIDcYvKnDg.png
再透過 nslookup up 查找 google.com
https://ithelp.ithome.com.tw/upload/images/20230924/20162773MlQjJApy7D.png
大成功!


上一篇
Day8 Proxmox VE 創建虛擬機
下一篇
Day10 Docker + Private Registry 建立 幫 Image 找安全的家吧!
系列文
地端建置大雜燴-下從網路線上到Grafana的建置之路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言